home *** CD-ROM | disk | FTP | other *** search
/ Die Ultimative Software-P…i Collection 1996 & 1997 / Die Ultimative Software-Pakete CD-ROM fur Atari Collection 1996 & 1997.iso / i / internet / software / inetcust / ip.h < prev    next >
Encoding:
C/C++ Source or Header  |  1991-10-04  |  1.5 KB  |  78 lines

  1. #ifndef _INET_IP
  2. #define _INET_IP
  3.  
  4. #ifndef _INET_PKT
  5. #include "pktdrv.h"
  6. #endif
  7.  
  8.  
  9. #define IP_ICMP    1        /* protocols to serve */
  10. #define IP_GGP    3
  11. #define IP_ST    5
  12. #define IP_TCP    6
  13. #define IP_UDP    17
  14.  
  15. #define MAXIP    10        /* max nr. of protocols to serve   */
  16. #define IP_NBUF    10        /* default number of packetbuffers */
  17.  
  18.  
  19. #define MAXIPSEG    1500
  20.  
  21. typedef unsigned long INADDR;
  22.  
  23.  
  24. /* The Internet Header: */
  25. typedef struct 
  26. {
  27.     u_char    vh;                /* version, hdrlen */
  28.     u_char    tos;            /* type of service */
  29.     u_short    length;
  30.     u_short    ident;
  31.     u_short    frag;
  32.     u_char    ttl;
  33.     u_char    protocol;
  34.     u_short    chksum;
  35.     INADDR    src_inaddr;
  36.     INADDR    dst_inaddr;
  37. } IP;
  38.  
  39. typedef struct
  40. {
  41.     ETH        et;
  42.     IP        ip;
  43.     union
  44.     {
  45.         char    opt[40];
  46.         char    data[MAXIPSEG-sizeof(IP)];
  47.     }od;
  48. } IP_PACKET;
  49.  
  50. #define ip_opt    od.opt
  51. #define ip_dat    od.data
  52. #define IPPKTSIZE    ((int)sizeof(PACKET))
  53.  
  54. #define IP_VERSION    4
  55. #define IP_HDR        5
  56. #define IP_TTL        255
  57. #define IP_TOS        0
  58. #define IP_FRAG        0x8000
  59. #define ip_version(ip) (((ip)->vh >> 4) & 0xf)
  60. #define ip_hdrlen(ip)  (((ip)->vh & 0xf) << 2)
  61.  
  62. #define ip_head(pkt) ((IP *)( ((PACKET *)pkt)->pkt_data ))
  63. #define ip_data(pkt) (((char *)ip_head(pkt)) + ip_hdrlen(ip_head(pkt)))
  64.  
  65. int ip_open(int,int (*)(PACKET *,int,INADDR));
  66. int ip_close(int);
  67. int ip_init(void);
  68. int ip_exit(void);
  69. char *ip_recv(int,int,char *);
  70. int ip_demux(void);
  71. int ip_dudemux(IP *);
  72. int ip_send(int,PACKET *,int,INADDR);
  73. PACKET *ip_alloc(int,int);
  74. int ip_free(PACKET *);
  75. int ip_requeue(PACKET *);
  76. INADDR    ip_myaddr(void);
  77.  
  78. #endif